Es la implementación concreta del repositorio, ubicada en la capa de infraestructura. Utiliza JPA u otro mecanismo de persistencia para realizar las operaciones en la base de datos.
✔️ Implementa la interfaz del repositorio de dominio.
✔️ Usa Spring Data JPA o cualquier tecnología de persistencia.
✔️ Traduce las operaciones del dominio a consultas en la base de datos.
📂 com.vortechgroup.prueba_tecnica.gestionvuelos.app.infrastructure.adapters.persistence
🔹 Aquí implementamos la lógica de persistencia usando Spring Data JPA.
Para usar Spring Data JPA, definimos un repositorio basado en JpaRepository.
📂 com.vortechgroup.prueba_tecnica.gestionvuelos.app.infrastructure.adapters.persistence
🔹 SpringDataAvionRepository extiende JpaRepository, permitiendo acceder a métodos como save, delete, findById, etc.
📌 Ventajas:
1️⃣ Desacoplamiento → La capa de dominio no depende de JPA ni de ninguna tecnología de persistencia.
2️⃣ Pruebas unitarias más fáciles → Puedes testear la lógica sin necesidad de conectarte a una BD.
3️⃣ Flexibilidad → Si decides cambiar PostgreSQL por MongoDB, solo modificas la capa de infraestructura.
4️⃣ Cumple con el Principio de Inversión de Dependencias (D de SOLID) → La capa de infraestructura depende del dominio, no al revés.
📌 Ejemplo de Inyección en un Caso de Uso:
🔹 Aquí el servicio usa la abstracción (AvionRepository), sin importar la implementación concreta.
| Repositorio | Ubicación | Propósito | Implementa |
|---|---|---|---|
| Repositorio de Dominio | Capa de Dominio | Define el contrato (qué operaciones se deben hacer) | No tiene implementación concreta |
| Repositorio de Infraestructura | Capa de Infraestructura | Implementa las operaciones con JPA | Usa JpaRepository y tecnologías específicas |
🎯 Con esta separación, la capa de dominio no depende de ninguna tecnología de persistencia, manteniendo la aplicación flexible y fácil de probar. 🚀